﻿using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.Infrastructure.Annotations;
using System.Data.Entity.ModelConfiguration;

namespace Delphi.Mimir.Data.Entities.Final.Mappings {
    public class TimeZoneMap : EntityTypeConfiguration<TimeZone> {

        public TimeZoneMap() {
            /******************************************************************
            /* Table
            /*****************************************************************/
            ToTable("fin.com_time_zones");

            /******************************************************************
            /* Primary Key
            /*****************************************************************/
            HasKey(tz => tz.TimeZoneId);

            /******************************************************************
            /* Index
            /*****************************************************************/
            // IX_COM_TIZ_CD
            Property(tz => tz.Code)
                .HasColumnAnnotation(IndexAnnotation.AnnotationName, new IndexAnnotation(new IndexAttribute("IX_COM_TIZ_CD", 1) { IsUnique = true }));

            /******************************************************************
            /* Relationships
            /*****************************************************************/
            // None

            /******************************************************************
            /* Properties
            /*****************************************************************/
            Property(tz => tz.TimeZoneId)
                .HasColumnName("tiz_id");

            Property(tz => tz.Code)
                .IsRequired()
                .IsUnicode(false)
                .HasMaxLength(25)
                .HasColumnName("tiz_cd");

            Property(tz => tz.Name)
                .IsOptional()
                .IsUnicode(false)
                .HasMaxLength(250)
                .HasColumnName("tiz_desc");

            Property(tz => tz.UtcOffsetTicks)
                .IsRequired()
                .HasColumnName("tiz_utc_offset_ticks");

            Ignore(tz => tz.UtcOffset);
        }
    }
}
